from pymilvus import MilvusClient, DataType

cli = MilvusClient(
    uri='http://39.104.78.210:19530',
    token='root:Milvus',
) # 建立连接
print(cli)
# cli.update_password(
#     user_name='root',
#     old_password='Milvus',
#     new_password='www.Xe0n.com',
# ) # 更改密码，不过好像没起作用
#
# cli.drop_collection(collection_name='demo') # 删除数据库
schema = cli.create_schema(
    auto_id=False,
    enable_dynamic_field=True
) # 创建的表结构, 包括如下操作
schema.add_field(field_name='id', datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name='vector', datatype=DataType.FLOAT_VECTOR, dim=2)

index_params = cli.prepare_index_params() # 创建的索引结构 包括如下操作
index_params.add_index(
    field_name='id',
    index_type='AUTOINDEX'
)
index_params.add_index(
    field_name='vector',
    index_type='AUTOINDEX',
    metric_type="L2"
)
cli.create_collection(
    collection_name='demo',
    schema=schema,
    index_params=index_params
) # 创建collection
#
# cli.create_collection(
#     collection_name='demo',
#     dimension=2,
# )
vectors = []
vectors.append([1, 1])
for i in range(200, 300):
    vectors.append([i, i])
# 填入 1，1  200，200 201，201 。。。

data = [
    {"id": i, "vector": vectors[i]} for i in range(len(vectors))
]

res = cli.insert(
    collection_name="demo",
    data=data,
)
print(res)

res = cli.search(
    collection_name="demo",
    anns_field="vector",
    data=[[1, 2]],
    limit=1,
    search_params={"metric_type": "L2"}
) # ANN(KNN) 查找最相近的元素
print(res)

